home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / source / dcache.d < prev    next >
Text File  |  2002-10-28  |  1KB  |  52 lines

  1. // dcache.d - dmodule cache flushing and showing tool
  2.  
  3. MODULE    'exec/semaphores'
  4.  
  5. ENUM    FLUSH,SHOW
  6.  
  7. PROC main()
  8.     DEF    ra,args=[0,0,0]:LONG,vers='$VER:DCache v1.0 by MarK (12.1.2000)\n'
  9.     IF ra:=ReadArgs('F=FLUSH/S,S=SHOW/S',args,NIL)
  10.         PrintF(vers+5)
  11.  
  12.         DEF    cache:PTR TO cache,module:PTR TO cachedmodule,cnt,len,old:PTR TO cachedmodule
  13.         IF cache:=FindSemaphore('DModuleCache')
  14.             ObtainSemaphore(cache)
  15.             module:=cache.modlist
  16.             cnt:=len:=0
  17.             WHILE module
  18.                 cnt++
  19.                 len+=module.length+SIZEOF_cachedmodule
  20.                 old:=module
  21.                 IF args[SHOW]
  22.                     PrintF('\l\s[50]: \d[6] bytes, \s\n',module.name,module.length,IF module.binary THEN 'binary' ELSE 'ascii')
  23.                 ENDIF
  24.                 module:=.next
  25.                 IF args[FLUSH]
  26.                     FreeVec(old.file)
  27.                     FreeVec(old)
  28.                 ENDIF
  29.             ENDWHILE
  30.             IF args[FLUSH] THEN cache.modlist:=NIL
  31.             IF cnt
  32.                 PrintF('Cached modules: \d, occupied memory: \d\n',cnt,len)
  33.             ELSE
  34.                 PrintF('Cache is empty.\n')
  35.             ENDIF
  36.             ReleaseSemaphore(cache)
  37.         ENDIF
  38.         FreeArgs(ra)
  39.     ENDIF
  40. ENDPROC
  41.  
  42. OBJECT cache OF SignalSemaphore
  43.     modlist:PTR TO cachedmodule
  44.  
  45. OBJECT cachedmodule
  46.     next:PTR TO cachedmodule,
  47.     name[80]:CHAR,                    // relative name
  48.     fullname[200]:CHAR,            // full file name
  49.     file:PTR TO CHAR,
  50.     length:LONG,
  51.     binary:BOOL
  52.